﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;

namespace DaedalusEngine.Source
{
    public interface IGameObject
    {
        #region Properties
        Texture2D Texture { get; set; }         //Sprite texture
        Vector2 Position { get; set; }          //Sprite position
        Vector2 Origin { get; set; }            //Sprite origin
        Rectangle Bounds { get; }               //Rectangle bounds (used for collision)
        float Rotation { get; set; }            //Rotation
        float Scale { get; set; }               //Scale
        float Alpha { get; set; }               //Alpha
        Color Color { get; set; }               //Color
        Color[] TextureData { get; }       //Texture color data (used for per-pixel collision)
        bool IsVisible { get; set; }
        #endregion

        #region Methods
        void SetBoundRect(int bufferX, int bufferY);
        void Update(GameTime gameTime);             //Method to update game logic
        void Draw(SpriteBatch spriteBatch);         //Method to draw sprite
        bool RectCollidesWith(IGameObject gObj);    //Method to check rectangular 
                                                    //collision between two IGameObject interfaced objects
        
        bool PixelCollidesWith(IGameObject gObj);   //Method to check per-pixel collision between two IGameObject
                                                    //interfaced objects
        #endregion
    }
}
